ホームに戻る
出典 :
関連 :
目次 :
トリガーとは
コントロールなどのプロパティ(依存関係プロパティ)が変化した際の動作を指定できる仕組み。
トリガーを用いることで、
- Button をクリックしている間だけ、Button の背景色を変化させる
- ItemsControl に表形式でデータを表示し、特定の値がセットされた場合に背景色や表示する文字を変化させる
といった動作が可能となる。
UIの振舞いに関わることから、
ビヘイビアの一部に含まれることもある。
スタイルとして適用するのが一般的である。
トリガーとコンバーターは表現できる動作が類似しており、コンバーターをトリガーで代替できることも多い。
トリガーはXAML上で記述が完結するため、コンバーターよりも簡便に用いることができる。
その他、詳細は
出典元を参照。
Trigger は、コントロールが持つプロパティが変化した際の動作を規定できる。
例 : Button が無効( IsEnabled == false )ならば背景色を青に変更
<
Style TargetType=
"{x:Type Button}">
<
Setter Property=
"Background" Value=
"Red"/>
<
Style.Triggers>
<!-- 無効状態なら背景色を青に -->
<
Trigger Property=
"IsEnabled" Value=
"False">
<
Setter Property=
"Background" Value=
"Blue"/>
</
Trigger>
</
Style.Triggers>
</
Style>
Style.Triggers 下に Trigger を定義している。
Button が無効になれば背景色が青になるが、再び有効になれば元の色(赤)に戻る。
つまり、トリガーによる変更は永続的なものではなく一時的なものである。
また、複数のプロパティの状態に基づいて変更を適用できる MultiTrigger も存在する。詳細は割愛。
DataTrigger は、バインドされたデータが変化した際の動作を規定できる。
例 : Button の Name プロパティが空文字か null ならば背景色を青に変更
<
Style TargetType=
"{x:Type Button}">
<
Setter Property=
"Background" Value=
"Red"/>
<
Style.Triggers>
<!-- Name が空文字か null なら背景色を青に -->
<
DataTrigger Binding=
"{Binding Name}" Value=
"">
<
Setter Property=
"Background" Value=
"Blue"/>
</
DataTrigger>
<
DataTrigger Binding=
"{Binding Name}" Value=
"{x:Null}">
<
Setter Property=
"Background" Value=
"Blue"/>
</
DataTrigger>
</
Style.Triggers>
</
Style>
自身のプロパティを基に判断する Trigger と異なり、DataTrigger はバインディングされたソースの値を基に判断する。
つまりデータバインディングに特化したトリガーであり、扱えるプロパティの自由度が高い。
複数のバインドソースの状態に基づいて変更を適用できる MultiDataTrigger が存在する。詳細は割愛。
特定のイベント(主にユーザー操作)を契機とした動作を規定できる。詳細はリンク先を参照。